Linux下如何编译C程序?

您所在的位置:网站首页 linux 编译运行c程序 Linux下如何编译C程序?

Linux下如何编译C程序?

#Linux下如何编译C程序?| 来源: 网络整理| 查看: 265

Windows下常用IDE来编译,Linux下直接使用gcc来编译,编译过程是Linux嵌入式编程的基础,也是嵌入式高频基础面试问题。

一、命令行编译及各个细分编译过程

hello.c示例代码:

#include intmain(void) { printf("Helloworld "); return0; }

编译:

gcchello.c-ohello

如有必要,还需回答出细分的几个步骤:

gcc-Ehello.c-ohello.i#预处理阶段 gcc-Shello.i-ohello.s#编译阶段 gcc-chello.s-ohello.o#汇编阶段 gcchello.o-ohello#链接阶段

具体细节可查往期笔记:《C程序编译过程》

二、借助make来编译

少量文件时可以使用上面方法编译。源码文件较多时,可借用make工具。make通过解析Makefile文件来执行一些gcc命令进行编译。

首先得创建一个Makefile文件,如:

hello:hello.c gcchello.c-ohello

编译运行:

上面更细分编译过程的Makefile文件如下:

关于make及Makefile更多内容可查阅:

【Linux笔记】make工程管理工具(一)

【Linux笔记】make工程管理工具(二)

三、借助CMake生成Makefile

实际开发很少会像上面一样自己编写Makefile文件,可借助cmake工具来生成。

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。

1、命令行操作

首先输入cmake --version命令查看cmake版本,若还没安装则执行如下命令安装:

sudoaptinstallcmake

下面开始实验演示。我们的cmake_test文件夹下有一个hello.c文件,在同文件夹下创建一个 CMakeLists.txt 文件:

输入如下内容:

cmake_minimum_required (VERSION 3.10.2) project (cmake_test) add_executable(cmake_test hello.c)

然后在cmake_test目录下依次输入如下命令生成Makefile文件:

mkdirbuild#创建build文件夹 cdbuild#进入build文件夹 cmake../#在cmake_test文件夹下生成Makefile

执行结果如下:

关于CMakeLists.txt文件具体语法感兴趣的朋友可自行查阅资料进行学习。

2、使用cmake-gui

上述是在命令行下使用cmake生成Makefile进行进行编译的方法。我们也可以使用图形化界面来生成Makefile文件。cmake-gui是cmake的一个图形化工具。下面依旧以实例作为演示。

我们把上一小节的CMakeLists.txt 与hello.c文件放入新创建的文件夹cmake-gui_test中:

在终端输入 cmake-gui 命令启动cmake-gu图形化工具。若未安装可输入如下命令进行安装:

sudoaptinstallcmake-qt-gui

如:

启动cmake-gui:

查看cmake-gui_test文件夹:

编译运行:

以上分享了一些编译的过程及方法,都是基础内容,需要熟练掌握。如果觉得文章对你有帮助,欢迎转发。

原文标题:还能这样用?Linux下如何编译C程序?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

扫一扫,分享给好友

复制链接分享 评论

发布评论请先 登录

相关推荐

SONiC正在成为云架构中领先的开放网络操作系统 SONIC是一个基于 Linux 的开源网络操作系统,能够在多个厂商的交换机和专用集成电路(ASIC.... 的头像 是德科技KEYSIGHT 发表于 03-20 13:16 • 185次 阅读 LT8668SX-DHDMI 2.0/4 Port MIPIM/LVDS,8个数据通道组成DP/eDP,使用嵌入式SPI闪存固件存储带缩放, 1.  一般的描述   LT8668SX-D可以配置在HDMI2.0标准下工作,最大6Gbps的数据速率。  ... 发表于 03-19 10:04 • 2334次 阅读 LT8668SX-DHDMI 2.0/4 Port MIPIM/LVDS,8个数据通道组成DP/eDP,使用嵌入式SPI闪存固件存储带缩放, 全志T507核心板常见问题解析 本文硬件平台采用全志T507四核车规级处理器设计核心板,本文整理在使用飞凌嵌入式T507产品过程种,.... 发表于 03-18 16:41 • 12次 阅读 全志T507核心板常见问题解析 如何在Docker构建出来的系统镜像中进行热点测试 飞凌嵌入式FETA40i-C核心板、FETT3-C核心板支持Docker容器技术,本节将展示使用Do.... 发表于 03-18 15:00 • 12次 阅读 如何在Docker构建出来的系统镜像中进行热点测试 ADI为Linux发行版扩充器件驱动 Ti Group选择是德科技5G测试平台 Keysight Technologies, Inc.(纽约证券交易所代码:KEYS)是一家领先的技.... 发表于 03-18 14:51 • 997次 阅读 关于Linux命令行烧写固件 说明:如果已经安装旧版本的烧写工具,请先点击“驱动卸载”按钮下载驱动,然后再点击 “驱动安装”按钮安.... 的头像 HarmonyOS官方合作社区 发表于 03-18 10:57 • 117次 阅读 i.MX6ULL驱动开发3—GPIO寄存器配置原理 介绍了字符设备驱动的两种新旧开发方式,并使用一个虚拟的字符驱动来学习字符设备的开发的流程。 的头像 码农爱学习 发表于 03-18 08:17 • 162次 阅读 i.MX6ULL驱动开发3—GPIO寄存器配置原理 Hi3861开发板串口看不到命令行是为什么?   1)开发板启动,只有教程中的AT命令能使用,敲回车报ERROR;   2)开发板没有linux常用命令吗(ls、pwd、cd)?还... 发表于 03-17 15:41 • 810次 阅读 分享一些单片机相关的理论知识 无论是初学单片机还是在学校的人来说,如果只是按教科书式的学法,上来就搞一堆名词指令,学了几个月还搞不.... 发表于 03-17 12:40 • 72次 阅读 分享一些单片机相关的理论知识 浅谈RISC-V星光板的启动流程 继《在RISC-V星光板上创建Debian系统镜像》之后,这一期来聊聊RISC-V星光板的启动流程。 发表于 03-17 10:30 • 6次 阅读 i.MX6ULL嵌入式Linux开发6-系统烧写到eMMC 本篇主要介绍了Linux移植的系统打包烧录的EMMC的方法,使用MfgTool工具,将**uboot.... 的头像 码农爱学习 发表于 03-17 09:17 • 1486次 阅读 i.MX6ULL嵌入式Linux开发6-系统烧写到eMMC 探讨嵌入式处理在工业和汽车领域的应用 您是否关注嵌入式处理在深度学习、步进电机、智能电网、ADAS 的应用?您是否在日常的设计中存在选型困.... 的头像 德州仪器 发表于 03-17 08:57 • 136次 阅读 STM32控制电机调速硬件电路问题? 主要功能是STM32控制电机调速,按键控制电机运转时间与速度档位,数码管显示运转的档位与运转时间,开机设置运转时间与速度档位... 发表于 03-16 17:42 • 2372次 阅读 嵌入式边缘AI应用开发简化指南 面临的一系列挑战包括选择恰当的深度学习模型、针对性能和精度目标对模型进行训练和优化,以及学习使用在嵌.... 发表于 03-16 11:36 • 927次 阅读 嵌入式边缘AI应用开发简化指南 一文深入理解操作系统的进程调度 想深入理解操作系统的进程调度,需要先获得一些准备知识,这样后面就不懵圈啦: 的头像 Linux爱好者 发表于 03-16 10:58 • 147次 阅读 如何编译已有的C++去生成可在OpenHarmony系统使用的动态库文件呢 原有Linux环境下的C++ 项目,可通过在CMakeList文件中设置使用的工具链,编译出各平台开发板上可使用的so文件。 请问,我现... 发表于 03-16 10:42 • 627次 阅读 AMS与Luxonis建立合作伙伴关系 是德科技推自助式企业协议许可门户 Keysight Technologies, Inc.(纽约证券交易所代码:KEYS)是一家领先的技.... 发表于 03-16 10:40 • 436次 阅读 stm32、51单片机和AVR单片机到底选哪一个 这些都是非常好的单片机学习路径,低中高单片机都是有大量的应用范围,只是分为不同的领域,工程、家用、军.... 发表于 03-16 10:39 • 60次 阅读 stm32、51单片机和AVR单片机到底选哪一个 星宸科技嵌入式CPU-SSD202D在摩托车无线投屏仪表批量 星宸科技股份有限公司(前身MStar)的嵌入式CPU芯片SSD202D,SSC8826Q等在摩托车仪.... 的头像 星宸科技陈文新 发表于 03-16 10:26 • 2740次 阅读 星宸科技嵌入式CPU-SSD202D在摩托车无线投屏仪表批量 如何鉴别Linux服务器是否被入侵 随着开源产品的越来越盛行,作为一个Linux运维工程师,能够清晰地鉴别异常机器是否已经被入侵了显得至.... 的头像 马哥Linux运维 发表于 03-16 10:08 • 196次 阅读 Linux namespace和cgroups简介 先放结论,namespace 是用来做资源隔离, cgroup 是用来做资源限制。 的头像 马哥Linux运维 发表于 03-16 09:03 • 188次 阅读 单片机学习都时候需要注意的步骤—依葫芦画瓢 很多朋友无论在学习什么东西的时候喜欢看别人的视频和程序,这些都能看懂然后就觉得自己都会了,等到自己写.... 发表于 03-15 17:04 • 43次 阅读 单片机学习都时候需要注意的步骤—依葫芦画瓢 星宸科技(SigmaStar)智能AI芯片SSD268G性能讲解 星宸科技SigmaStar推出的高整合度,多功能一体化智能AI芯片SSD268G,丰富的接口和内置Ip可以满足各种不同的应用场景和产... 发表于 03-15 16:45 • 607次 阅读 星宸科技(SigmaStar)智能AI芯片SSD268G性能讲解 NXP iMX8MP开发板在UUU烧写时卡在99% 来源 | 飞凌嵌入式 题图|OKMX8MP-C开发板 近期查看飞凌嵌入式技术支持部门问题反馈列表时,.... 发表于 03-15 16:24 • 17次 阅读 通过虚拟硬件原型 加速边缘智能系统创新 作为移动互联网时代智能手机芯片架构的领军者,Arm总结了推动市场发展的要素,并推出先进现代的方案和工.... 发表于 03-15 15:55 • 949次 阅读 基础的Linux操作命令 IC设计是在linux环境下,很多操作需要在Terminal中进行,因此想要学习IC设计,就必须先需.... 的头像 FPGA之家 发表于 03-15 13:42 • 140次 阅读 嵌入式驱动开发两大子系统的使用 本文的关注点是 gpio driver --> gpio subsystem core -> gpi.... 的头像 FPGA之家 发表于 03-15 13:41 • 189次 阅读 gpio和pinctrl子系统的关系与区别 gpio 和 pinctrl 子系统在内核里的使用率非常高,和嵌入式产品的关联非常大。从这两个子系统.... 的头像 FPGA之家 发表于 03-15 11:40 • 200次 阅读 如何逐渐成为高级嵌入式工程师呢? 对于硬件来讲有几个方向,就单纯信号来说分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个.... 的头像 STM32嵌入式开发 发表于 03-15 09:44 • 172次 阅读 单片机的中断系统是什么,它的作用是什么 这个还用问?答案肯定不是。学习 51单片机好处是,学会51之后自然就会举一反三和融会贯通,市面上单片.... 发表于 03-14 17:20 • 26次 阅读 单片机的中断系统是什么,它的作用是什么 BPF系统调用与Tracing类型的BPF程序 既然是提供向内核注入代码的技术,那么安全问题肯定是重中之重。平时防范他人通过漏洞向内核中注入代码,这.... 的头像 Linux阅码场 发表于 03-14 16:42 • 319次 阅读 涂鸦模组开发(压力传感器)—4.上报传感器数据给涂鸦模块 概述 涂鸦智能 (NYSE:TUYA) 是一家致力于让生活更智能的领先技术公司,涂鸦提供能够智连万物.... 发表于 03-14 15:42 • 4次 阅读 涂鸦模组开发(压力传感器)—4.上报传感器数据给涂鸦模块 盘点5款值得收藏的Linux开发板 最近股市又哀鸿遍野……于是,那句 “树莓派是最好的理财产品”又开始在我耳边萦绕。“缺芯”笼罩之下,开.... 的头像 话说科技 发表于 03-14 15:12 • 316次 阅读 盘点5款值得收藏的Linux开发板 涂鸦模组开发(压力传感器HX711)—3. 涂鸦模组数据通信 概述 涂鸦智能 (NYSE:TUYA) 是一家致力于让生活更智能的领先技术公司,涂鸦提供能够智连万物.... 发表于 03-14 15:09 • 10次 阅读 涂鸦模组开发(压力传感器HX711)—3. 涂鸦模组数据通信 霍尼韦尔智能楼宇技术助力小镇建设_ADI为Linux发行版扩充1000多个器件驱动  2022年2月11日,中国北京——霍尼韦尔宣布与中建二局安装工程有限公司和北京市设备安装工程集团有.... 的头像 电子魔法师 发表于 03-14 15:04 • 601次 阅读 涂鸦模组开发(压力传感器HX711—2压力传感器HX711 概述 涂鸦智能 (NYSE:TUYA) 是一家致力于让生活更智能的领先技术公司,涂鸦提供能够智连万物.... 发表于 03-14 14:29 • 14次 阅读 涂鸦模组开发(压力传感器HX711—2压力传感器HX711 作品分享-基于RT-Thread系统和N32G457开发板开发的电子围栏设计 基于RT-Thread系统和N32G457开发板开发的电子围栏设计,主要采用的是N32G457开发板,并搭载AIR724 4G模块作为数据传输... 发表于 03-14 14:25 • 2019次 阅读 作品分享-基于RT-Thread系统和N32G457开发板开发的电子围栏设计 常见的嵌入式WEB服务器介绍 常见的嵌入式WEB服务器包括:Lighttpd, Shttpd, Thttpd, Boa, Mini.... 的头像 嵌入式ARM 发表于 03-14 10:05 • 132次 阅读 i.MX6ULL嵌入式Linux开发5-根文件系统完善 上篇文章,使用BusyBox构建了基础的嵌入式Linux系统的根文件系统,基本的功能可以正常运行,但.... 的头像 码农爱学习 发表于 03-14 08:44 • 179次 阅读 i.MX6ULL嵌入式Linux开发5-根文件系统完善 i.MX6ULL嵌入式Linux开发4-根文件系统构建 本篇使用BusyBox来构建根文件系统,并通过NFS网络调试的方式实现根文件系统挂载测试,实测时解决.... 的头像 码农爱学习 发表于 03-14 08:41 • 198次 阅读 i.MX6ULL嵌入式Linux开发4-根文件系统构建 i.MX6ULL嵌入式Linux开发3-Kernel移植 本文进行Linux内核的移植。 的头像 码农爱学习 发表于 03-14 08:36 • 196次 阅读 i.MX6ULL嵌入式Linux开发3-Kernel移植 第一个C语言编译器的来源 不知道你有没有想过,某种编程语言的第一个编译器是怎么来的呢?这不就是“鸡生蛋,蛋生鸡”的问题吗? 的头像 嵌入式ARM 发表于 03-12 12:36 • 670次 阅读 嵌入式系统的软件架构设计 嵌入式是软件设计领域的一个分支,它自身的诸多特点决定了系统架构师的选择,同时它的一些问题又具有相当的.... 的头像 嵌入式ARM 发表于 03-12 11:06 • 370次 阅读 嵌入式操作系统任务的定义、特性及划分 在嵌入式开发中,面对的都是单个 CPU 的情况,而在这个开发过程中,我们会涉及到裸机开发或者是跑操作.... 的头像 嵌入式ARM 发表于 03-12 08:49 • 351次 阅读 嵌入式操作系统任务的定义、特性及划分 深入介绍三种不同的程序架构 在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整.... 的头像 嵌入式ARM 发表于 03-12 08:36 • 317次 阅读 【吉方工控G-3288-02开发板试用体验】深入调研与进度汇报 首先,在论坛中拜读了几位前辈的展示,发现大家几乎都在用一款GPS模块,这与我原本的开发目的有所不同。我希望明确下此工控机... 发表于 03-11 18:17 • 541次 阅读 【吉方工控G-3288-02开发板试用体验】深入调研与进度汇报 涂鸦模组开发(压力传感器HX711)—1.模块准备 概述 涂鸦智能 (NYSE:TUYA) 是一家致力于让生活更智能的领先技术公司,涂鸦提供能够智连万物.... 发表于 03-11 17:54 • 10次 阅读 涂鸦模组开发(压力传感器HX711)—1.模块准备 有没有能用在51单片机平台上的语音芯片? 最近看了一下云知声的蜂鸟M系列的离线语音,但是研究了半天不知道能不能移植到51单片机的平台上(就是通过串口通讯),后来又看... 发表于 03-11 17:08 • 1640次 阅读 基于全志A40i核心板实现的呼吸机解决方案 导读 呼吸机是一种用来替代,控制或者改变患者正常的生理呼吸,增加患者肺活量,改善呼吸功能,维持患者体.... 发表于 03-11 16:05 • 18次 阅读 Tina Linux 系统介绍 Tina Linux是全志科技基于Linux内核开发的针对智能硬件类产品的嵌入式软件系统。Tina Linux基于openwrt-14.07 版本的软件开... 发表于 03-11 15:05 • 4605次 阅读 单片机学习:关于P0和P2口的一些知识分享 学校为什么能存在,光靠看一本书就能自学成才,那还要学校有什么用,当然了,除了一些学习能力很强,且有一.... 发表于 03-11 13:34 • 30次 阅读 单片机学习:关于P0和P2口的一些知识分享 单片机原理I/O口结构:P0口和P2口的结构介绍 实话告诉你,除非学习能力很强,且很有自主学习能力的人,才适合自学这条路,如果不具备以上能力的,或者想.... 发表于 03-11 13:31 • 52次 阅读 2022全国大学生嵌入式芯片与系统设计竞赛龙芯赛道开启 2022全国大学生嵌入式芯片与系统设计竞赛龙芯赛道已于近期开启报名。本届大赛由中国电子学会主办,东南.... 的头像 龙芯中科 发表于 03-11 12:33 • 468次 阅读 提高Linux服务器性能的20个技巧  Linux功能丰富、强大、灵活,你可以用它完成各种任务,在这篇文章中,我们将讨论一些提高Linux.... 的头像 Linux爱好者 发表于 03-11 10:14 • 185次 阅读 P3口的相关结构和功能的知识分享 所有人的大道理都懂,但是自己很难控制自己,自学时间上不容易把控,还是跟班学习好点,有人看着不学也得学.... 发表于 03-10 17:50 • 27次 阅读 P3口的相关结构和功能的知识分享 51点灯与Linux驱动点灯的区别 嵌入式初学者入门的第一个“项目”就是LED点灯,那么,本文带你看看51、STM32、Linux点灯有.... 的头像 strongerHuang 发表于 03-10 17:37 • 1401次 阅读 RK3288里的dts和dtsi是什么? RK3288里的dts和dtsi是什么? 发表于 03-10 07:57 • 596次 阅读 AM4379 AM437x ARM Cortex-A9 微处理器 (MPU) TI AM437x高性能处理器基于ARM Cortex-A9内核。 这些处理器通过3D图形加速得到增强,可实现丰富的图形用户界面,还配备了协处理器,用于进行确定性实时处理(包括EtherCAT,PROFIBUS,EnDat等工业通信协议)。该器件支持高级操作系统(HLOS)。基于Linux的® 可从TI免费获取。其它HLOS可从TI的设计网络和生态系统合作伙伴处获取。 这些器件支持对采用较低性能ARM内核的系统升级,并提供更新外设,包括QSPI-NOR和LPDDR2等存储器选项。 这些处理器包含功能方框图中显示的子系统,并且后跟相应的“说明”中添加了更多信息说明。 处理器子系统基于ARM Cortex-A9内核,PowerVR SGX™图形加速器子系统提供3D图形加速功能以支持显示和高级用户界面。 可编程实时单元子系统和工业通信子系统(PRU-ICSS与ARM内核分离,允许单独操作和计时,以实现更高的效率和灵活性.PRU-ICSS支持更多外设接口和EtherCAT,PROFINET,EtherNet /IP,PROFIBUS,以太网Powerlink,Sercos,EnDat等... 发表于 09-25 11:51 • 532次 阅读 AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3